/*
   基本类型间的运算 记住boolean不参与以下规则

   自动类型提升
   	容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型
	说明: 此处的容量大和小指的是这个类型表示数的容量大和容量下,而不是类型占用的空间大和小 比如: float容量要大于long的容量 但内存是小于long的
	byte、char、short --> int --> long --> float --> double
	上面是正常的规则,但是特别的: 当byte、char、short它们三个类型的变量之间做运算包括同种类型之间做运算时,结果为int类型

   强制类型转换	
*/
class VariableTest2{
	public static void main(String[] args){
		byte b1 = 2;
		int i1 = 129;
		//byte b2 = b1 + i1; //编译不通过 不兼容的类型: 从int转换到byte可能会有损失
		int i2 = b1 + i1;
		long l1 = b1 + i1;
		float f = b1 + i1;
		short s1 = 123;
		double d1 = s1;

		char c1 = 'a';
		int i3 = 10;
		int i4 = c1 + i3;

		short s2 = 10;
		//short s3 = c1 + s2; //编译不通过 错误: 不兼容的类型: 从int转换到short可能会有损失
		//char c2 = c1 + s2;  //编译不通过 错误: 不兼容的类型: 从int转换到char可能会有损失
	
		byte b2 = 10;
		//char c3 = c1 + b2;  //编译不通过 错误: 不兼容的类型: 从int转换到char可能会有损失
	}
}
